package com.rectcircle.wechat.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 
 * 字符串工具，字符串分析拼接
 * 
 * @author RectCircle
 * @version 0.1<br>
 * 2016年8月2日-下午7:41:26<br>
 * Copyright (c) 2016 RectCircle-版权所有<br>
 *
 */
public class StringTools {
	/**
	 * 
	 * 根据文件的绝对路径获得文件名
	 * 
	 * @param path 文件的绝对路径
	 * @return 文件名
	 */
	public static String getFileNameByPath(String path) {
	    int left = path.lastIndexOf("/");
	    int right = path.lastIndexOf("\\");
	    int index = left > right ? left : right;
	    return path.substring(index + 1);
	}
	
	/**
	 * 
	 * 根据http请求的的返回的响应头Content-disposition的内容，获得文件名
	 * 
	 * @param contentDisposition 响应头Content-disposition的内容
	 * @return 文件名
	 */
	public static String getFileNameByContentDisposition(String contentDisposition) {
		Pattern pattern = Pattern.compile("filename=\"(.+?)\"");
		Matcher matcher = pattern.matcher(contentDisposition);

		String result = null;

		if (matcher.find()) {
			result = matcher.group(1);
		}
		return result;
	}

	/**
	 * 
	 * 根据路径和文件名生成文件的绝对路径
	 * 
	 * @param dir 路径
	 * @param fileName 文件名
	 * @return 文件的绝对路径
	 */
	public static String createFilePath(String dir, String fileName) {
		char last = dir.charAt(dir.length()-1);
		if(last=='/'||last=='\\'){
			return dir+fileName;
		} else {
			return dir+"/"+fileName;
		}
	}
	
	/**
	 * 
	 * 生成新的名称避免覆盖现有文件<br>
	 * 以windows的方式：<br>
	 * 例如：name为test.txt，那么返回test(1).txt<br>
	 * name位test(1).txt，那么返回test(2).txt<br>
	 * 以此类推
	 * 
	 * @param name 文件名 Xxx.后缀名
	 * @return 新名称
	 */
	public static String rename(String name){
		String[] split = name.split("\\.");
		Pattern pattern = Pattern.compile("\\((\\d+)\\)");
		Matcher matcher = pattern.matcher(split[0]);
		String result = null;

		if (matcher.find()) {
			result = matcher.group(1);
			return split[0].split("\\(")[0]+"("+String.valueOf(Integer.parseInt(result)+1)+")."+split[1];
		} else {
			return split[0]+"(1)."+split[1];
		}


	}
	
}
